/**
 * 
 */
package cn.biplam.common.struc;

/**
 * 技术底层公共数据结构
 */
public abstract class BaseStruc {
	
	
	/**
	 * 索引表表结构 
	 * 所有树形索引表的数据结构
	 */
	public static class IndexTableStruc{
		
		/**表名称参数名称*/
		public static final String Param_Table_Name="table_name";
		
		/** 索引表节点ID */
		public static final String NODE_ID = "node_id";
		/** 父节点ID字段 */
		public static final String NODE_PARENT = "node_parent";
		/** 业务模型对象名称 */
		public static final String NODE_NAME="node_name";
		/** 业务模型对象描述 */
		public static final String NODE_DESC="node_desc";
		/** 节点级别 */
		public static final String NODE_LEVEL = "node_level";
		/** 是否叶子节点 */
		public static final String IS_LEAF = "is_leaf";
		/** 是否根节点 */
		public static final String IS_ROOT = "is_root";
		/** 节点排序 */
		public static final String NODE_SEQUENCE = "node_sequence";
		/** 节点是否有哥哥 */
		public static final String HAVE_BROTHER = "have_brother";
		/** 节点是否有弟弟 */
		public static final String HAVE_L_BROTHER = "have_l_brother";
		/** 数据表真实id */
		public static final String NODE_CODE="node_code";
		/** 节点类型 */
		public static final String OPERATOR_TYPE = "operator_type";
		/** 业务模型对象类型 */
		public static final String NODE_TYPE="node_type";
	}

	/**
	 * 模型索引平面汇总关系表结构
	 * 适用于各种父子表的关系汇总
	 */
	public static class FlatTableStruc{
		/** 索引表节点ID字段 */
		public static final String NODE_ID = "node_id";
		/** 父节点ID字段 */
		public static final String NODE_PARENT = "node_parent";
		/** 节点级别 */
		public static final String NODE_LEVEL = "node_level";
		/** 是否叶子节点 */
		public static final String IS_LEAF = "is_leaf";
		/** 是否根节点 */
		public static final String IS_ROOT = "is_root";
	}
	
	
	/**
	 * 业务模型表 元数据表结构
	 */
	public static class ModelTableStruc
	{
		/** 主键ID，即业务表ID */
		public static final String tableID="oid";
		/** 排序ID */
		public static final String orderID="orid";
		/** 业务表名 */
		public static final String tableName="table_name";
		/** 业务表中文名 */
		public static final String tableCnName="table_cn_name";
		/** 业务表说明 */
		public static final String tableComments="table_comments";
		/** 业务表所属主题ID */
		public static final String themeID="mid";

		//以下是查询时的虚拟字段
		/** 主键字段名 */
		public static final String MAIN_TABLE_NAME="MAIN_TABLE_NAME";
		/** 主键字段逻辑名 */
		public static final String MAIN_TABLE_CN_NAME="MAIN_TABLE_CN_NAME";
		/** 外键字段名 */
		public static final String FOREIGN_TABLE_NAME="FOREIGN_TABLE_NAME";
		/** 外键字段逻辑名 */
		public static final String FOREIGN_TABLE_CN_NAME="FOREIGN_TABLE_CN_NAME";

	}

	/**
	 * 业务模型表外键关系 元数据表结构
	 */
	public static class ModelTableFkStruc{
		/** 关系ID */
		public static final String FK_ID="REID";
		/** 主键表ID */
		public static final String Main_Table_ID="MAIN_TABLE_ID";
		/** 外键表ID */
		public static final String Foreign_Table_ID="FOREIGN_TABLE_ID";
	}
	
	/**
	 * 业务模型表外键关系字段 元数据表结构
	 */
	public static class ModelTableFkColStruc{
		/** 外键字段关系ID */
		public static final String Fk_Col_ID="RCOID";
		/** 外键关系主键表字段ID */
		public static final String Main_Table_Col_ID="main_table_col_id";
		/** 外键关系外键表字段ID */
		public static final String Foreign_Table_Col_ID="foreign_table_col_id";
		/** 外键关系ID */
		public static final String Fk_ID=ModelTableFkStruc.FK_ID;

		//以下是查询时的虚拟字段
		/** 主键字段名 */
		public static final String MAIN_TABLE_COL_NAME="MAIN_TABLE_COLUMN_NAME";
		/** 主键字段逻辑名 */
		public static final String MAIN_TABLE_COL_CN_NAME="MAIN_TABLE_COL_CN_NAME";
		/** 外键字段名 */
		public static final String FOREIGN_TABLE_COL_NAME="FOREIGN_TABLE_COLUMN_NAME";
		/** 外键字段逻辑名 */
		public static final String FOREIGN_TABLE_COL_CN_NAME="FOREIGN_TABLE_COL_CN_NAME";
	}

	/**
	 * 业务模型表字段 数据表结构
	 */
	public static class ModelTableColStruc{
		/** 表字段编号 */
		public static final String COLUMN_ID = "ocid";
		/** 字段所属表编号 */
		public static final String TABLE_ID="oid";
		/** 字段排序号 */
		public static final String COLUMN_ORDER="orid";
		/** 字段物理名称 */
		public static final String COLUMN_NAME="column_name";
		/** 字段中文名称 */
		public static final String COLUMN_CN_NAME="column_cn_name";
		/** 字段描述 */
		public static String COLUMN_COMMENTS="col_comments";
		/** 字段数据类型 */
		public static final String DATA_TYPE="data_type";
		/** 字段Precision */
		public static final String DATA_PRECISION="data_precision";
		/** 字段scale */
		public static final String DATA_SCALE="data_scale";
		/** 字段是否可以为空 */
		public static final String NULL_ABLE="nullable";
		/** 字段是否主键 */
		public static final String IS_PK="is_pk";
		/** 字段长度 */
		public static final String DATA_LENGTH="data_length";
		/** 字段是否外键 */
		public static final String IS_FK="is_fk";
	}

}
